package com.jmye.coding.logback.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.concurrent.CompletableFuture;

/**
 * @description:
 * @author: jmye
 * @date: 2025/7/6 16:41
 **/
@Slf4j
@Component
public class LogbackRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 在主线程设置上下文
        LogContext.put("mainBatchId", "BATCH-001");
        LogContext.put("childBatchId", "CHILD-005");

// 日志输出示例
        log.warn("磁盘空间不足");
        log.error("数据库连接失败");

// 异步任务中自动传递上下文
        CompletableFuture.runAsync(() -> {
            log.error("子线程错误日志"); // 自动包含父线程的batch信息
        });

// 使用后清理（防止内存泄漏）
        LogContext.clear();
    }
}
